const UserCommand = require('./service/UserCommand');
const readline = require('readline');
const Config = require("./service/Config");
const {findChrome} = require("./service/Helper");











async function showMenu() {
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
    });

    const userCommand = new UserCommand();
    await userCommand.init();
    const menu = `
网易云盘歌曲ID校正
0. 扫码登录  
1. 手动输入登录cookie,(浏览器登录后,F12,控制台点击,应用->cookie->复制 MUSIC_U 的值)
2. 查看当前用户信息
3. 获取用户所有歌单并保存
4. 获取云盘歌单id并保存
5. 下载歌单歌曲,排除云盘存在的(歌曲id作为下载文件名)
6. 云盘Id匹配(歌曲为数字的作为歌曲id)
7. 获取歌手专辑歌曲
8. 云盘匹配安文件名匹配ID(先执行7)
9. 一个个匹配ID
10. 下载某个歌手的所有歌(先执行7)
T. 退出
请输入:
`;
    async function prompt(question) {
        return new Promise(resolve => rl.question(question, resolve));
    }
    while (true) {
        const answer = (await prompt('请选择操作（输入数字）:' + menu)).trim();

        switch(answer) {
            case '0':
                console.log('你选择了扫码登录');
                const res = await userCommand.user.login();
                console.log(`登录${res?'成功':'失败'}`);
                break;
            case '1':
                const cookie = await prompt('请输入 cookie: ');
                userCommand.user.setCookie(cookie);
                console.log('✅ 当前 cookie:', userCommand.user.getCookie());
                break;
            case '2':
                console.log('你选择了查看当前用户信息');
                const userInfo = await userCommand.user.getProfile();
                console.log(userInfo);
                break;
            case '3':
                console.log('你选择了获取用户所有歌单并保存');
                await userCommand.playList.createPlayList();
                break;
            case '4':
                console.log('你选择了获取云盘歌单id并保存');
                await userCommand.cloudSong.saveIdsToFile();
                break;
            case '5':
                console.log('你选择了下载歌单歌曲,排除云盘存在的');
                await userCommand.song.downloadPlayListSongs();
                break;
            case '6':
                console.log('云盘Id匹配');
                await userCommand.cloudSong.changeIds();
                break;
            case '7':
                console.log('获取歌手专辑歌曲');
                let singerId = (await prompt('请输入 歌手id: ')).trim();
                if (singerId !== '') {
                    await userCommand.album.saveToFile(singerId);
                }
                break;
            case '8':
                console.log('云盘匹配安文件名匹配ID');
                let singerId1 = (await prompt('请输入 歌手id: ')).trim();
                if (singerId1 === '') {
                    console.log('歌手ID 为空 ，停止');
                    break;
                }
                await userCommand.changeSongIdByName(singerId1);
                break;
            case '9':
                console.log('一个个匹配ID');
                let songName = (await prompt('请输入文件名: ')).trim();
                if (songName === '') {
                    console.log('输入文件名为空,停止');
                    break;
                }
                let songId = (await prompt('请输入网易云歌曲ID: ')).trim();
                if (songId === '') {
                    console.log('输入为ID空,停止');
                    break;
                }
                await userCommand.cloudSong.changOneSongIdByName(songName,songId);
                break;
            case '10':
                console.log('下载某个歌手的所有歌');
                let singerId2 = (await prompt('请输入 歌手id: ')).trim();
                if (singerId2 === '') {
                    console.log('歌手ID 为空 ，停止');
                    break;
                }
                await userCommand.downSongBySIngerId(singerId2);
                break;
            case 'T':
                await userCommand.browserManager.close();
                console.log('退出程序');
                rl.close();
                return;
            default:
                console.log('无效选择，请输入 0-5');
        }
    }
}


(async () => {
    // ---------- 立即执行 ----------
    const chromePath = await findChrome();

    if (!chromePath) {
        console.log('未检测到谷歌浏览器: ' + Config.chromeFile);
        console.log('请先到以下网址下载并安装 Chrome：');
        console.log('https://www.google.cn/chrome/index.html');
        console.log('\n');
        return;
        // process.exit(1);
    } else
    {
        Config.chromeFile = chromePath;
        // 检测通过
        console.log('Chrome 已找到：' + Config.chromeFile);
    }
    await showMenu();
})();
